package ecole.organisation;

import java.util.Date;

import ecole.utilisateur.Professeur;

/**
 * Classe Seance qui définie les cours des différents groupes;
 * @author Salah Bennour
 */
public class Seance implements java.io.Serializable{

	private static final long serialVersionUID = 2L;
	
	private Professeur prof;
	private Formation form;
	private Enseignement ens;
	private Date date;
	private int creneau;
	private Groupe groupe;
	
	// ***************CONSTRUCTEUR*************************
	public Seance(Enseignement enseignement, Professeur professeur,Date date,int creneau, Groupe grp){
		this.ens = enseignement;
		this.prof = professeur;
		this.date = date;
		this.creneau = creneau;
		this.groupe = grp;
	}

	// ***************GETTER*************************
	
	/**
	 * Methode permettant de retourner la formation a laquelle on assigne une seance.
	 * @return FOrmation : l'instance de la classe Formation.
	 */ 
	public Formation getForm() {
		return form;
	}
	/**
	 * Methode permettant de retourner le nom d'une seance.
	 * @return String : le nom d'une seance.
	 */
	public String getNomSeance(){
		return ens.getNomEnseignement();
	}  

	/**
	 * Methode permettant de retourner le professeur responsable de la seance.
	 * @return Professeur : l'instance de la classe Professeur.
	 */ 
	public Professeur getRespSeance(){
		return this.prof;
	}    

	/**
	 * Methode permettant de retourner le creneaux horaire choisis (exemple: 8h-10h).
	 * @return int : le creneaux horaire choisis.
	 */    
	public int getCreneau(){
		return creneau;
	}
	
	/**
	 * Methode permettant de retourner la date a laquelle la seance aura lieu (ex 12/12/2012).
	 * @return Date : l'instance de la classe Date.
	 */    
	public Date getDate() {
		return date;
	}
	
	/**
	 * Methode permettant de retourner l'enseignement de la seance.
	 * @return Enseignement : l'instance de la classe Enseignement.
	 */    
	public Enseignement getEns() {
		return ens;
	}

	/**
	 * Methode permettant de retourner le groupe de la seance.
	 * @return Groupe : l'instance de la classe Groupe.
	 */    
	public Groupe getGroupe() {
		return groupe;
	}

	/**
	 * Methode permettant de retourner l'enseignement de la seance.
	 * @return Enseignement : l'instance de la classe Enseignement.
	 */    
	public void setCreneau(int creneau) {
		this.creneau = creneau;
	}
	
	@SuppressWarnings("deprecation")
	private String dateToString(Date date){
	     return date.getDay()+"/"+date.getMonth()+"/"+date.getYear();
	  }

	public String print(){
	    return getEns().print()+"#"+getRespSeance().getNom()+
	    "#"+this.getRespSeance().getPrenom()+"#"+getRespSeance().getSexe()+
	    "#"+dateToString(getDate())+"#"+getCreneau()+"#"+groupe.getNomGroupe()+"#"+groupe.getIntTypeGroupe();
	    
	}
	// ***************TO STRING*************************
	@SuppressWarnings("deprecation")
	public String toString(){
		return "Seance \n \t Nom :"  +getNomSeance()+
		"\n \t Formation : " +form.getNomFormation()+
		"\n \t Annee : " +form.getAnneeFormation()+
		" \n \t Prof Resp : " +prof.getNom()+
		"\n \t Date : " +getDate().getDay();
	}
}
